package edu.mju.observer;

import java.util.ArrayList;
import java.util.List;
import java.util.Observable;
import java.util.Observer;

/**
 *  这是被观察者——产品列表
 * @Author:wyp
 * @Date:2020/9/19 17:21
 */
public class ProductList extends Observable {
    /**
     * 产品列表
     */
    private List<Object> productList = null;

    /**
     * 构造方法私有化：不能被实例化
     */
    private ProductList() {
    }

    /**
     * 类唯一实例
     */
    private static ProductList product;

    /**
     *  取得唯一实例
     * @return 产品列表唯一实例
     */
    public static ProductList getInstance(){
        if(product == null){
            product = new ProductList();
            product.productList = new ArrayList<>();
        }
        return product;
    }

    /**
     * 新增产品
     * @param newProduct 新产品
     */
    public void addProduct(String newProduct){
        productList.add(newProduct);
        System.out.println("产品新增了："+newProduct);
        //当新增了对象，
        this.setChanged();
        //调用父类notifyObservers()方法并传入新产品
        this.notifyObservers(newProduct);
    }

    /**
     *  增加产品列表观察者
     * @param observer 观察者
     */
    public void addProductListObserver(Observer observer){
        this.addObserver(observer);
    }
}
